// 基础URL定义
const BASE_URL = 'http://localhost:3002/api';

// 创建axios实例
const axios = require('axios');
const instance = axios.create({
  baseURL: BASE_URL,
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 添加课程接口
async function addCourse(courseData) {
  try {
    console.log('发送添加课程请求...');
    const response = await instance.post('/demo/addcourse', courseData);
    console.log('添加课程响应:', response.data);
    return response.data;
  } catch (error) {
    console.error('添加课程失败:', error.response?.data || error.message);
    console.error('详细错误:', error);
    throw error;
  }
}

// 添加评论接口（使用正确的API路径和参数）
async function addComment(commentData) {
  try {
    console.log('发送添加评论请求...');
    const response = await instance.post('/demo/additem', commentData);
    console.log('添加评论响应:', response.data);
    return response.data;
  } catch (error) {
    console.error('添加评论失败:', error.response?.data || error.message);
    console.error('详细错误:', error);
    throw error;
  }
}

// 主函数 - 测试完整的发布课程和评价流程
async function main() {
  try {
    // 使用测试用户ID 1（后端会跳过完整的token验证）
    const testUserId = 1;
    
    console.log('=== 开始测试发布课程和评价流程 ===');
    console.log('使用测试用户ID 1进行测试...');
    
    // 第一部分：添加课程
    console.log('\n--- 第一部分：添加课程 ---');
    
    // 准备课程数据
    const courseData = {
      title: 'Vue.js从入门到精通_完整测试课程' + Date.now(),
      body: '这是一门完整测试课程，介绍Vue.js的基础知识和实战技巧。通过本课程的学习，你将能够掌握Vue.js的核心概念和开发方法，能够独立开发Vue.js应用。',
      teachername: '完整测试老师',
      startTime: new Date().toISOString(),
      endTime: new Date(Date.now() + 60 * 60 * 1000).toISOString(), // 默认1小时后结束
      categoryid: 349, // 前端开发_测试类别
      userid: testUserId,
      picPaths: null
    };
    
    console.log('准备添加的课程数据:', courseData);
    
    // 添加课程
    const courseResponse = await addCourse(courseData);
    const courseId = courseResponse.data.id;
    
    console.log('\n=== 发布课程成功 ===');
    console.log('课程ID:', courseId);
    console.log('课程名称:', courseResponse.data.title);
    console.log('发布者用户ID:', testUserId);
    
    // 第二部分：添加评论
    console.log('\n--- 第二部分：添加评论 ---');
    
    // 准备评论数据 - 使用刚才成功添加的课程ID
    const commentData = {
      typeIndex: 4, // comments表的索引
      content: '这门课程非常好，内容丰富，讲解清晰，很适合入门学习！这是通过完整测试脚本添加的评价。',
      rating: 5, // 评分，1-5星
      articleid: courseId, // 使用新创建的课程ID
      userid: testUserId,
      replyType: '课程'
    };
    
    console.log('准备添加的评论数据:', commentData);
    
    // 添加评论
    const commentResponse = await addComment(commentData);
    
    console.log('\n=== 添加评论成功 ===');
    console.log('评论ID:', commentResponse?.data?.id || '未知');
    console.log('评论内容:', commentData.content);
    console.log('评论用户ID:', testUserId);
    console.log('评论课程ID:', courseId);
    
    console.log('\n=== 发布课程和评价流程测试完成！ ===');
    console.log('整个流程执行成功，无错误发生！');
    
  } catch (error) {
    console.error('执行过程中出错:', error);
    process.exit(1);
  }
}

// 执行主函数
main();